package com.jlf.core.engine.server;

import com.jlf.core.engine.domain.SchemaDomainDO;
import com.jlf.core.engine.query.SchemaDomainQueryInput;
import com.jlf.core.output.ListResultWrapper;
import com.jlf.core.server.entity.EditRecordWrapper;

/**
 * 领域定义的服务接口
 *
 * @author wujr
 * 2023/7/7
 * @version 1.0
 * 【变更历史】
 * [wujr 2023/7/7 1.0 新增]
 */
public interface SchemaDomainServer {
    /**
     * 新增领域定义
     * @param record 领域记录
     * @return 新增结果
     * @throws Exception 新增失败，抛出异常
     */
    SchemaDomainDO add(SchemaDomainDO record) throws Exception;

    void edit(EditRecordWrapper<SchemaDomainDO> wrapper) throws Exception;

    /**
     * 删除模型领域
     * @param record 模型记录
     * @throws Exception 删除失败，抛出异常
     */
    void delete(SchemaDomainDO record) throws Exception;

    /**
     * 查询符合条件的模型
     * @param input 查询条件
     * @param pageNo 分页索引，从1开始
     * @param pageSize 分页的记录数量，0表示不分页
     * @return 符合条件的模型记录
     */
    ListResultWrapper<SchemaDomainDO> query(SchemaDomainQueryInput input, Integer pageNo, Integer pageSize);

}
